Actor MicroDevil : HighArmorClass
{
Player.ScoreIcon "MICDMUGS"
player.startitem "BaseFlagPack", 1
player.displayname "MicroDevil"
player.soundclass "MicroDevilc"
player.startitem "CanThirdFire"
player.startitem "DevilTearsBoss"
player.startitem "UltimateAttackItem3"
player.startitem "UltSoundWatcherSpawn3"
player.startitem "Base56Ammo", 56
player.startitem "BaseAltfireAmmo", 112
player.startitem "MicroDevilGravityAmmo", 112
player.startitem "NoHealthBar"
player.viewheight 51
player.forwardmove 0.75,0.75
player.sidemove 0.73,0.73
player.jumpz 12
States
{
Animation0:
Spawn:
MICR B 0
MICR B 1 A_JumpIf(z-floorz>0,"Jumping")
MICR A 1 A_JumpIf(z-floorz>0,"Jumping")
MICR A 0 A_JumpIfInventory("MicroDevilUltActive",1,"SeeUlt")
MICR A 0 A_JumpIfInventory("MicroDevilFly",1,"Ceiling")
Goto Spawn+2
See:
MICR B 0 A_JumpIfInventory("MicroDevilFly",1,"CeilingSee")
MICR BBBBCCCCDDDDEEEE 1 A_JumpIf(z-floorz>0,"Jumping")
MICR E 0 A_JumpIfInventory("MicroDevilUltActive",1,"See")
Goto Spawn+1
SeeUlt:
MICR B 0 A_PlaySound("weapon/chargetrain",1,0.5) MICR B 0 A_Quake(1,12,0,200)
MICR BBBCCCDDDEEE 1 A_JumpIf(z-floorz>0,"Jumping")
MICR E 0 A_JumpIfInventory("MicroDevilUltActive",1,"SeeUlt")
Goto Spawn+1
Jumping:
MICR K 0 A_JumpIfInventory("MicroDevilFly",1,"CeilingJump")
MICR K 0 A_JumpIfInventory("MicroDevilUltActive",1,"UltJumping")
MICR K 0 A_JumpIf(momz<=0,"Landing")
MICR K 1 A_JumpIf(z-floorz<=0,"Spawn")
loop
Landing:
MICR J 0 A_JumpIfInventory("MicroDevilFly",1,"CeilingJump")
MICR J 0 A_JumpIfInventory("MicroDevilUltActive",1,"UltJumping")
MICR J 0 A_JumpIf(momz>0,"Jumping")
MICR J 1 A_JumpIf(z-floorz<=0,"Spawn")
loop
UltJumping:
MICR J 1 A_JumpIf(z-floorz<=0,"Spawn")
wait
CeilingJump:
MIC2 K 1
MIC2 K 0 A_JumpIf(momz>0,"CeilingLanding")
MIC2 K 0 A_CheckCeiling("CeilingLand")
loop
CeilingLanding:
MIC2 J 1
MIC2 J 0 A_JumpIf(momz<=0,"CeilingJump")
MIC2 J 0 A_CheckCeiling("CeilingLand")
loop
CeilingLand:
MIC2 K 0 A_PlaySoundEx("misc/fatland","Auto")
Goto Ceiling
Missile:
MICR F 0 A_JumpIfInventory("MicroDevilFly",1,"CeilingFire")
MICR FFFFFGGGGG 1 A_JumpIf(z-floorz>0,"JumpMissile")
goto Spawn+1
JumpMissile:
MICR L 0 A_JumpIfInventory("MicroDevilFly",1,"CeilingFire")
MICR LLLLL 1 A_JumpIf(z-floorz<=0,"Missile")
MICR M 0 A_JumpIfInventory("MicroDevilFly",1,"CeilingFire")
MICR MMMMM 1 A_JumpIf(z-floorz<=0,"Missile")
Goto Spawn+1
Ceiling:
MIC2 B 0 A_JumpIf(momz!=0,"CeilingJump")
MIC2 B 1 A_JumpIf(momx>1||momy>1||momx<-1||momy<-1,"CeilingSee")
Ceiling2:
MIC2 A 1 A_JumpIf(momx>1||momy>1||momx<-1||momy<-1,"CeilingSee")
MIC2 A 0 A_JumpIf(momz!=0,"CeilingJump")
MIC2 A 0
MIC2 A 1 A_CheckCeiling("Ceiling2")
Goto CeilingJump
CeilingSee:
MIC2 B 0
MIC2 BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(momz!=0,"CeilingJump")
MIC2 E 0 A_JumpIf(momx>1||momy>1||momx<-1||momy<-1,"CeilingSee")
Goto Ceiling
CeilingFire:
MIC2 FFFFFGGGGG 1 A_JumpIf(momz!=0,"CeilingJFire")
Goto Ceiling
CeilingJFire:
MIC2 LLLLLMMMMM 1 A_JumpIf(momz==0,"CeilingFire")
Goto Ceiling

Animation1: SplittingAttackA: MICR NNN 1
Goto Spawn+2
Animation2: SplittingAttackB: MICR OOO 1
Goto Spawn+2
Animation3: SplittingAttackC: MICR PPP 1
Goto Spawn+2
Animation4: SplittingAttackD: MICR QQQ 1
Goto Spawn+2
Animation5: SplittingAttackE: MICR RRR 1
Goto Spawn+2
Animation6: SplittingAttackF: MICR SSS 1
Goto Spawn+2
Animation7: SplittingAttackG: MICR TTT 1
Goto Spawn+2
Animation8: SplittingAttackH: MICR UUU 1
Goto Spawn+2

Animation9: SplittingAttackA2: MIC2 NNN 1
Goto Ceiling2+2
Animation10: SplittingAttackB2: MIC2 OOO 1
Goto Ceiling2+2
Animation11: SplittingAttackC2: MIC2 PPP 1
Goto Ceiling2+2
Animation12: SplittingAttackD2: MIC2 QQQ 1
Goto Ceiling2+2
Animation13: SplittingAttackE2: MIC2 RRR 1
Goto Ceiling2+2
Animation14: SplittingAttackF2: MIC2 SSS 1
Goto Ceiling2+2
Animation15: SplittingAttackG2: MIC2 TTT 1
Goto Ceiling2+2
Animation16: SplittingAttackH2: MIC2 UUU 1
Goto Ceiling2+2

Animation17:
MicroDevilSphereA:
MICR VVV 1
Goto Spawn+2
Animation18:
MicroDevilSphereB:
MICR WWW 1
Goto Spawn+2
Animation19:
MicroDevilSphereC:
MICR XXX 1
Goto Spawn+2
Animation20:
MicroDevilSphereD:
MICR YYY 1
Goto Spawn+2

ClassPain:
MICR H 0 A_JumpIfInventory("MicroDevilFly",1,"ClassPain.Flipped")
MICR HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
ClassPain.Flipped:
MIC2 HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
ClassDeath:
MICR I 0 A_JumpIfInventory("MicroDevilFly",1,"ClassDeath.Flipped")
MICR I 20 ACS_ExecuteAlways(999,0,0)
MICR I 0 A_PlayerScream
MICR I 0 A_SpawnItemEx("FakeDeathFXPB", 0, 0, 32)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
MICR H 0 A_JumpIfInTargetInventory("MagnetBeamWepM",1,2)
MICR H 0 A_GiveToTarget("WeaponGetter")
MICR H 0 A_GiveToTarget("MagnetBeamWepM")
goto ClassDeath

ClassDeath.Flipped:
MIC2 I 0
MIC2 I 20 ACS_ExecuteAlways(999,0,0)
MIC2 I 0 A_PlayerScream
MIC2 I 0 A_SpawnItemEx("FakeDeathFXPB", 0, 0, 32)
NOFX A 1 A_CheckPlayerDone
wait
}
}

Actor DevilTearsBoss : VCBaseWeapon
{
Obituary "$OB_MICRODEVIL1"
weapon.ammotype1 "Base56Ammo"
weapon.ammotype2 "BaseAltfireAmmo"
States
{
Ready:
YDHD A 0 A_JumpIfInventory("MicroDevilGravityAmmo",28,"Ready.CanTF")
Ready.NoTF:
YDHD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,112)) YDHD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
YDHD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,112)) YDHD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
YDHD A 0 A_GiveInventory("MicroDevilGravityAmmo",1) YDHD A 0 A_GiveInventory("Base56Ammo",1) YDHD A 0 A_GiveInventory("BaseAltfireAmmo",1)
YDHD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,112)) YDHD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
YDHD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,112)) YDHD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
YDHD A 0 A_GiveInventory("MicroDevilGravityAmmo",1) YDHD A 0 A_GiveInventory("Base56Ammo",1) YDHD A 0 A_GiveInventory("BaseAltfireAmmo",2)
Goto Ready
Ready.CanTF:
YDHD A 0 A_JumpIfInventory("MicroDevilGravityCoolDown",1,"Ready.NoTF")
YDHD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,112)) YDHD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") YDHD A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
YDHD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,112)) YDHD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") YDHD A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
YDHD A 0 A_GiveInventory("MicroDevilGravityAmmo",1) YDHD A 0 A_GiveInventory("Base56Ammo",1) YDHD A 0 A_GiveInventory("BaseAltfireAmmo",1)
YDHD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,112)) YDHD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") YDHD A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
YDHD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,112)) YDHD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") YDHD A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
YDHD A 0 A_GiveInventory("MicroDevilGravityAmmo",1) YDHD A 0 A_GiveInventory("Base56Ammo",1) YDHD A 0 A_GiveInventory("BaseAltfireAmmo",2)
loop
Ready.Flipped:
YDH2 A 0 A_JumpIfInventory("MicroDevilGravityAmmo",1,1)
Goto User1.Ceiling
YDH2 A 0 A_JumpIfInventory("MicroDevilDropDown",1,"User1.Ceiling") YDH2 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,112))
YDH2 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") YDH2 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1") 
YDH2 A 0 A_JumpIfInventory("MicroDevilDropDown",1,"User1.Ceiling") YDH2 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,112))
YDH2 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") YDH2 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
YDH2 A 0 A_GiveInventory("Base56Ammo",1) YDH2 A 0 A_GiveInventory("BaseAltfireAmmo",1)
YDH2 A 0 A_JumpIfInventory("MicroDevilGravityAmmo",1,1)
Goto User1.Ceiling
YDH2 A 0 A_JumpIfInventory("MicroDevilDropDown",1,"User1.Ceiling") YDH2 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,112))
YDH2 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") YDH2 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1") 
YDH2 A 0 A_JumpIfInventory("MicroDevilDropDown",1,"User1.Ceiling") YDH2 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,112))
YDH2 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") YDH2 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
YDH2 A 0 A_GiveInventory("Base56Ammo",1) YDH2 A 0 A_GiveInventory("BaseAltfireAmmo",2)
loop

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
YDHD A 1 A_Lower
loop
Select:
TNT1 A 0 A_GunFlash
TNT1 A 0 ACS_ExecuteAlways(991,0,10879)
Select2:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
YDHD A 1 A_Raise
loop

Fire:
YDHD B 0 A_TakeInventory("Base56Ammo",7) 
YDHD B 0 A_PlaySoundEx("misc/devilfire","Weapon")
YDHD BBBBBBB 0 A_FireCustomMissile("DevilTearShot",Random(-3,3),0,0,8,0,Random(-3,3))
YDHD B 0 A_JumpIfInventory("MicroDevilFly",1,"Fire.Ceiling")
YDHD BCDEFFFFFFFFFFFFFFFEDCB 1
Goto Ready
Fire.Ceiling:
YDH2 BCDEFFFFFFFFFFFFFFFEDCB 1 A_JumpIfInventory("MicroDevilDropDown",1,"User1.Ceiling")
Goto Ready.Flipped

Altfire:
RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAltCheck")
YDHD G 0 A_SetGravity(0.0)
YDHD G 0 SetPlayerProperty(0,1,4)
YDHD G 0 A_GiveInventory("VCOnce",1)
YDHD G 0 A_ChangeFlag("SOLID",False)
YDHD G 0 A_TakeInventory("CutterFlag",99)
YDHD G 0 A_ChangeFlag("INVULNERABLE",True)
YDHD G 0 A_GiveInventory("InvProtection",1)
YDHD G 0 A_TakeInventory("BaseCustomFlag1",1)
YDHD G 0 A_TakeInventory("BaseCustomFlag2",1)
YDHD G 0 A_JumpIfInventory("MicroDevilFly",1,"Altfire.Ceiling")
YDHD G 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",1)
YDHD H 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",1)
YDHD I 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",2)
YDHD J 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",2)
YDHD K 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",3)
YDHD L 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",3)
YDHD L 0 A_TakeInventory("BaseAltfireAmmo",38)
YDHD L 0 A_PlaySoundEx("weapon/PirateBubble","Auto")
YDHD L 0 A_FireCustomMissile("MicroDevilChunk2",0,0,0,32)
YDHD M 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",4)
YDHD N 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",4)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",5)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",5)
YDHD O 0 A_TakeInventory("BaseAltfireAmmo",38)
YDHD O 0 A_PlaySoundEx("weapon/PirateBubble","Auto")
YDHD O 0 A_FireCustomMissile("MicroDevilChunk",0,0,0)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",6)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",6)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",7)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",7)
YDHD O 0 A_TakeInventory("BaseAltfireAmmo",38)
YDHD O 0 A_PlaySoundEx("weapon/PirateBubble","Auto")
YDHD O 1 A_ChangeVelocity(cos(pitch)*35,0,-sin(pitch)*35,CVF_RELATIVE|CVF_REPLACE)
YDHD O 0 A_GiveInventory("CutterFlag",1)
YDHD O 0 ACS_NamedExecuteWithResult("VC_SetState",8)
SplittingAttack:
YDHD O 0 A_GiveInventory("CutterFlag",1)
YDHD O 0 ACS_NamedExecuteWithResult("VC_SetState",8)
YDHD O 0 A_SpawnItemEx("MicroDevilChunkDamager",0,0,8)
YDHD O 0 ACS_NamedExecuteAlways("cbm_missileyank",0,32)
YDHD O 0 A_SpawnItemEx("MicroDevilWallCheck",0,0,8,momx,momy,momz,0,8)
YDHD O 0 A_JumpIfInventory("CutterFlag",36,"SplittingAttackEnd")
YDHD O 1 A_GiveInventory("SplittingAttackMovementPickUp",1)
loop
SplittingAttackEnd:
YDHD O 0 A_TakeInventory("CutterFlag",38)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",7)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",7)
YDHD O 0 A_GiveInventory("BaseCustomFlag1",1)
YDHD O 0 A_PlaySoundEx("weapon/PirateBubble","Body")
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",6)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",6)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",5)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",5)
YDHD O 0 A_GiveInventory("BaseCustomFlag2",1)
YDHD O 0 A_PlaySoundEx("weapon/PirateBubble","Body")
YDHD N 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",4)
YDHD M 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",4)
YDHD L 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",3)
YDHD K 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",3)
YDHD K 0 A_PlaySoundEx("weapon/PirateBubble","Body")
YDHD J 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",2)
YDHD I 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",2)
YDHD H 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",1)
YDHD G 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",1)
YDHD G 0 SetPlayerProperty(0,0,4)
YDHD G 0 A_TakeInventory("VCOnce",1)
YDHD G 0 A_SpawnItemEx("Resolidifier")
YDHD G 0 A_ChangeFlag("INVULNERABLE",False)
YDHD G 0 A_TakeInventory("InvProtection",1)
YDHD G 0 A_GiveInventory("GravityRestore",1)
Goto Ready
Altfire.Ceiling:
YDH2 G 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",9)
YDH2 H 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",9)
YDH2 I 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",10)
YDH2 J 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",10)
YDH2 K 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",11)
YDH2 L 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",11)
YDH2 L 0 A_TakeInventory("BaseAltfireAmmo",38)
YDH2 L 0 A_PlaySoundEx("weapon/PirateBubble","Auto")
YDH2 L 0 A_FireCustomMissile("MicroDevilChunk2",0,0,0,-48)
YDH2 M 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",12)
YDH2 N 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",12)
YDH2 O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",13)
YDH2 O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",13)
YDH2 O 0 A_TakeInventory("BaseAltfireAmmo",38)
YDH2 O 0 A_PlaySoundEx("weapon/PirateBubble","Auto")
YDH2 O 0 A_FireCustomMissile("MicroDevilChunk",0,0,0,-16)
YDH2 O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",14)
YDH2 O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",14)
YDH2 O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",15)
YDH2 O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",15)
YDH2 O 0 A_TakeInventory("BaseAltfireAmmo",38)
YDH2 O 0 A_PlaySoundEx("weapon/PirateBubble","Auto")
YDH2 O 1 A_ChangeVelocity(cos(pitch)*35,0,-sin(pitch)*35,CVF_RELATIVE|CVF_REPLACE)
YDH2 O 0 ACS_NamedExecuteWithResult("VC_SetState",16)
YDH2 O 0 A_GiveInventory("CutterFlag",1)
YDH2 O 0 A_SpawnItemEx("MicroDevilChunkDamager",0,0,8)
SplittingAttack2:
YDH2 O 0 A_GiveInventory("CutterFlag",1)
YDH2 O 0 ACS_NamedExecuteWithResult("VC_SetState",16)
YDH2 O 0 ACS_NamedExecuteAlways("cbm_missileyank",0,32)
YDH2 O 0 A_SpawnItemEx("MicroDevilChunkDamager",0,0,8)
YDHD O 0 A_SpawnItemEx("MicroDevilWallCheck",0,0,8,momx,momy,momz,0,8)
YDH2 O 0 A_JumpIfInventory("CutterFlag",36,"SplittingAttackEnd2")
YDH2 O 1 A_GiveInventory("SplittingAttackMovementPickUp",1)
loop
SplittingAttackEnd2:
YDH2 O 0 A_TakeInventory("CutterFlag")
YDH2 O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",15)
YDH2 O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",15)
YDH2 O 0 A_GiveInventory("BaseCustomFlag1",1)
YDH2 O 0 A_PlaySoundEx("weapon/PirateBubble","Body")
YDH2 O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",14)
YDH2 O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",14)
YDH2 O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",13)
YDH2 O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",13)
YDH2 O 0 A_GiveInventory("BaseCustomFlag2",1)
YDH2 O 0 A_PlaySoundEx("weapon/PirateBubble","Body")
YDH2 N 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",12)
YDH2 M 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",12)
YDH2 L 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",11)
YDH2 K 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",11)
YDH2 K 0 A_PlaySoundEx("weapon/PirateBubble","Body")
YDH2 J 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",10)
YDH2 I 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",10)
YDH2 H 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",9)
YDH2 G 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",9)
YDH2 G 0 SetPlayerProperty(0,0,4)
YDH2 G 0 A_TakeInventory("VCOnce",1)
YDH2 G 0 A_SpawnItemEx("Resolidifier")
YDH2 G 0 A_ChangeFlag("INVULNERABLE",False)
YDH2 G 0 A_TakeInventory("InvProtection",1)
Goto Ready.Flipped
NoAltCheck:
YDHD G 0 A_JumpIfInventory("MicroDevilFly",1,"Ready.Flipped")
goto Ready

User1:
"####" "##" 1
YDHD A 0 A_JumpIfInventory("MicroDevilFly",1,"User1.Ceiling")
YDHD A 0 A_SetGravity(-0.8)
YDHD A 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
YDHD A 0 A_GiveInventory("MicroDevilFly",1)
YDHD A 0 A_GiveInventory("MicroDevilSpeed",1)
YDHD A 0 A_TakeInventory("MicroDevilDropDown",1)
YDHD A 0 A_PlaySoundEx("gravityman/switch","Weapon")
YDHD PP 1 A_CheckCeiling("HitCeiling")
User1Hold:
YDH2 A 1 A_CheckCeiling("HitCeiling")
wait
HitCeiling:
YDH2 A 1 Offset(0,22)A_JumpIfInventory("MicroDevilDropDown",1,"User1.Ceiling")
YDH2 A 1 Offset(0,12)A_JumpIfInventory("MicroDevilDropDown",1,"User1.Ceiling")
YDH2 A 1 Offset(0,2)A_JumpIfInventory("MicroDevilDropDown",1,"User1.Ceiling")
YDH2 A 1 Offset(0,2)A_JumpIfInventory("MicroDevilDropDown",1,"User1.Ceiling")
YDH2 A 1 Offset(0,12)A_JumpIfInventory("MicroDevilDropDown",1,"User1.Ceiling")
YDH2 A 1 Offset(0,22)A_JumpIfInventory("MicroDevilDropDown",1,"User1.Ceiling")
Goto Ready.Flipped
User1.Ceiling:
YDHD D 0 A_SetGravity(1.5)
YDHD D 0 A_ChangeFlag("THRUSPECIES",True)
YDHD D 0 A_TakeInventory("MicroDevilFly",1)
YDHD D 0 A_TakeInventory("MicroDevilSpeed",1)
YDHD D 0 A_PlaySoundEx("hctiws\namytivarg","Weapon")
YDH2 G 0 ACS_NamedExecuteWithResult("VC_SetState",17) YDH2 G 0 A_CheckFloor("SphereLand")
YDH2 H 0 ACS_NamedExecuteWithResult("VC_SetState",17) YDH2 H 0 A_CheckFloor("SphereLand")
YDH2 I 0 ACS_NamedExecuteWithResult("VC_SetState",17) YDH2 I 0 A_CheckFloor("SphereLand")
YDH2 J 0 ACS_NamedExecuteWithResult("VC_SetState",17) YDH2 J 0 A_CheckFloor("SphereLand")
YDH2 K 0 ACS_NamedExecuteWithResult("VC_SetState",17) YDH2 K 0 A_CheckFloor("SphereLand")
YDH2 L 0 ACS_NamedExecuteWithResult("VC_SetState",17) YDH2 L 0 A_CheckFloor("SphereLand")
YDH2 M 0 ACS_NamedExecuteWithResult("VC_SetState",17) YDH2 M 0 A_CheckFloor("SphereLand")
YDH2 N 0 ACS_NamedExecuteWithResult("VC_SetState",17) YDH2 N 0 A_CheckFloor("SphereLand")
MicroDevilSlamHold:
YDH2 O 0 A_CheckFloor("SphereLand")
YDH2 O 0 A_TakeInventory("MicroDevilFly",1)
YDH2 O 0 A_TakeInventory("MicroDevilSpeed",1)
YDH2 O 1 ACS_NamedExecuteWithResult("VC_SetState",17)
YDH2 O 0 A_CheckFloor("SphereLand")
YDH2 O 0 A_TakeInventory("MicroDevilFly",1)
YDH2 O 0 A_TakeInventory("MicroDevilSpeed",1)
YDH2 O 1 ACS_NamedExecuteWithResult("VC_SetState",17)
loop
SphereLand:
YDHD O 0 A_Quake(4,18,0,420)
YDHD O 0 A_GiveInventory("GravityRestore",1)
YDHD O 0 ACS_Execute(191,0,APROP_JumpZ,12,1)
YDHD O 0 A_PlaySoundEx("weapon/punksuzy","Body")
YDHD O 0 A_SpawnItemEx("MicroDevilSphereDamager",0,0,32)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",18) YDHD O 0 ACS_NamedExecute("VC_ViewHeight",0,42)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",19) YDHD O 0 ACS_NamedExecute("VC_ViewHeight",0,36)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",19) YDHD O 0 ACS_NamedExecute("VC_ViewHeight",0,30)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",19) YDHD O 0 ACS_NamedExecute("VC_ViewHeight",0,30)
YDHD O 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",18) YDHD O 0 ACS_NamedExecute("VC_ViewHeight",0,36)
YDHD N 1 A_Stop YDHD B 0 ACS_NamedExecuteWithResult("VC_SetState",18) YDHD O 0 ACS_NamedExecute("VC_ViewHeight",0,42)
YDHD M 1 ThrustThingZ(0,50,0,1)
YDHD L 1 ACS_NamedExecuteWithResult("VC_SetState",20) YDHD B 0 ACS_NamedExecute("VC_ViewHeight",0,48)
YDHD K 1 ACS_NamedExecuteWithResult("VC_SetState",20) YDHD B 0 A_spawnItemEx("Resolidifier")
YDHD J 1 ACS_NamedExecuteWithResult("VC_SetState",20) YDHD B 0 A_ChangeFlag("THRUSPECIES",False)
YDHD I 1 ACS_NamedExecuteWithResult("VC_SetState",20) YDHD B 0 A_TakeInventory("MicroDevilDropDown",1)
YDHD H 1 ACS_NamedExecuteWithResult("VC_SetState",20) YDHD B 0 A_GiveInventory("MicroDevilGravityCoolDown",175)
YDHD G 1 ACS_NamedExecuteWithResult("VC_SetState",20) YDHD B 0 A_SpawnItemEx("FlippedGravityCoolDownWatcher")
YDHD AA 1
YDHD AA 1 A_Jump(256,"Ready")
Goto Ready

UltimateAttack:
YDHD AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("SpeedGearFX", random(-16, 16), 0, random(0,48), random(1,10), 0, random(-5,5), random(0, 359))
YDHD A 0 A_TakeInventory("UltAttackFlag",1) YDHD A 0 A_TakeInventory("MicroDevilFly",1) YDHD A 0 ACS_NamedExecuteWithResult("VC_SetState",0)
YDHD A 0 A_PlaySoundEx("classes/ultimateactivation","Auto") YDHD A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,133) YDHD A 0 A_PlaySoundEx("speedgear/up","Body")
YDHD A 0 A_ChangeFlag("INVULNERABLE",True) YDHD A 0 A_GiveInventory("InvProtection",1)  YDHD A 0 A_GiveInventory("PowerUltBuildCooldown",1) YDHD A 0 A_GiveInventory("GravityRestore",1)
YDHD A 0 A_GunFlash("MicroDevilUlt") YDHD A 0 ACS_Execute(191,0,APROP_JumpZ,12,1) YDHD A 0 A_TakeInventory("MicroDevilSpeed",1)
YDHD S 1 A_Recoil(-15)
YDHD T 1 A_ChangeFlag("PICKUP",False)
YDHD D 1 A_GiveInventory("MicroDevilColor2",1)
YDHD E 1 A_GiveInventory("MicroDevilUltActive",1)
DevilTrainHold:
YDHD U 1 Offset(0,36)A_GiveInventory("MicroDevilColor1",1) YDHD U 0 A_JumpIfInventory("MediumUltimateAmmo",1,1) Goto DevilTrainEnd
YDHD U 0 A_TakeInventory("MediumUltimateAmmo",1) YDHD U 0 A_ChangeVelocity(cos(pitch)*22,0,momz,CVF_RELATIVE|CVF_REPLACE) YDHD U 0 A_SpawnItemEx("MicroDevilTrainDamager0")
YDHD U 1 Offset(0,40)A_GiveInventory("MicroDevilColor1",1) YDHD U 0 A_JumpIfInventory("MediumUltimateAmmo",1,1) Goto DevilTrainEnd
YDHD U 0 A_TakeInventory("MediumUltimateAmmo",1) YDHD U 0 A_ChangeVelocity(cos(pitch)*22,0,momz,CVF_RELATIVE|CVF_REPLACE) YDHD U 0 A_SpawnItemEx("MicroDevilTrainDamager0")
YDHD F 1 Offset(0,44)A_GiveInventory("MicroDevilColor2",1) YDHD F 0 A_JumpIfInventory("MediumUltimateAmmo",1,1) Goto DevilTrainEnd
YDHD F 0 A_TakeInventory("MediumUltimateAmmo",1) YDHD F 0 A_ChangeVelocity(cos(pitch)*22,0,momz,CVF_RELATIVE|CVF_REPLACE) YDHD F 0 A_SpawnItemEx("MicroDevilTrainDamager0")
YDHD F 1 Offset(0,40)A_GiveInventory("MicroDevilColor2",1) YDHD F 0 A_JumpIfInventory("MediumUltimateAmmo",1,1) Goto DevilTrainEnd
YDHD F 0 A_TakeInventory("MediumUltimateAmmo",1) YDHD F 0 A_ChangeVelocity(cos(pitch)*22,0,momz,CVF_RELATIVE|CVF_REPLACE) YDHD F 0 A_SpawnItemEx("MicroDevilTrainDamager0")
loop
DevilTrainEnd:
TNT1 A 0 A_GunFlash
TNT1 A 0 A_GiveInventory("MicroDevilUltEndPickUpPickUp",1)
YDHD FEDCBAAA 1 
Goto Ready

Flash:
TNT1 A 1 A_GiveInventory("MicroDevilCeilingCheck1",1)
TNT1 A 0 A_GiveInventory("MicroDevilJumpCheck",1)
TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 0 A_CheckCeiling(1)
Goto Flash2
TNT1 A 0 A_JumpIfInventory("MicroDevilFly",1,1)
Goto Flash2
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("SkyTextureCheck")==1,1)
Goto Flash2
TNT1 A 0 A_GiveInventory("MicroDevilDropDown",1)
Goto Flash2
Flash2:
TNT1 A 1 A_GiveInventory("MicroDevilCeilingCheck2",1)
TNT1 A 0 A_GiveInventory("MicroDevilJumpCheck",1)
TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 0 A_CheckCeiling(1)
Goto Flash
TNT1 A 0 A_JumpIfInventory("MicroDevilFly",1,1)
Goto Flash
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("SkyTextureCheck")==1,1)
Goto Flash
TNT1 A 0 A_GiveInventory("MicroDevilDropDown",1)
Goto Flash
MicroDevilUlt:
TNT1 A 1 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_GiveInventory("MicroDevilClonePickUp",1) TNT1 A 0 A_GiveInventory("MicroDevilUltDamagerPickUp",1)
TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 0 A_JumpIfInventory("CutterFlag",12,1)
loop
TNT1 A 0 A_TakeInventory("CutterFlag",11)
loop
EndFlash:
TNT1 A 1
stop
}
}

Actor DevilTearShot
{
Translation "198:198=176:176"
PROJECTILE
-NOGRAVITY
Damagetype "MicroDevil"
Obituary "$OB_MICRODEVIL1"
Damage (3)
speed 45
Radius 12
Height 16
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
YDHD Z 1
wait
}
}

Actor MicroDevilChunk
{
Translation "192:192=216:216", "198:198=220:220"
PROJECTILE
+SKYEXPLODE
+RIPPER
+DONTREFLECT
damage (0)
speed 34
Radius 16
Height 16
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2: //35
MICR U 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
MICR U 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"End")
MICR U 0 ACS_NamedExecuteAlways("cbm_missileyank",0,32)
MICR U 1 A_SpawnItemEx("MicroDevilChunkDamager",0,0,8) MICR U 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"ComeBack")
MICR U 0 A_GiveInventory("CutterFlag",1)
MICR U 0 A_JumpIfInventory("CutterFlag",35,"Death2")
loop
Death:
MICR U 0 A_CheckFloor("KeepMoving")
MICR U 0 A_CheckCeiling("KeepMoving")
Goto Death2
KeepMoving:
MICR U 0 A_SpawnItemEx("MicroDevilChunkB",0,0,0,30,0,0,0,1)
stop
Death2:
MICR U 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
MICR U 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"End")
MICR U 1 A_Stop
MICR U 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"ComeBack")
loop
ComeBack:
MICR U 0 A_SpawnItemEx("ReturningMicroDevilChunk",0,0,0,0,0,0,0,1)
stop
End:
TNT1 A 0
stop
}
}

Actor MicroDevilChunkB : MicroDevilChunk
{
States
{
Death:
MICR U 1 A_Stop
MICR U 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"ComeBack")
loop
}
}

Actor MicroDevilChunk2 : MicroDevilChunk
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
MICR U 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
MICR U 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"End")
MICR U 0 ACS_NamedExecuteAlways("cbm_missileyank",0,32)
MICR U 1 A_SpawnItemEx("MicroDevilChunkDamager",0,0,8)
MICR U 0 A_JumpIfInTargetInventory("BaseCustomFlag2",1,"ComeBack")
MICR U 0 A_GiveInventory("CutterFlag",1)
MICR U 0 A_JumpIfInventory("CutterFlag",36,"Death2")
loop
KeepMoving:
MICR U 0 A_SpawnItemEx("MicroDevilChunk2B",0,0,0,31,0,0,0,1)
stop
Death2:
MICR U 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
MICR U 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"End")
MICR U 1 A_Stop
MICR U 0 A_JumpIfInTargetInventory("BaseCustomFlag2",1,"ComeBack")
loop
}
}

Actor MicroDevilChunk2B : MicroDevilChunk2
{
States
{
Death:
MICR U 1 A_Stop
MICR U 0 A_JumpIfInTargetInventory("BaseCustomFlag2",1,"ComeBack")
loop
}
}

Actor ReturningMicroDevilChunk : MicroDevilChunk
{
+MISSILE
+NOCLIP
+NOGRAVITY
+DONTBLAST
+NOINTERACTION
+SEEKERMISSILE
reactiontime 350
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MICR U 0 A_RearrangePointers(0,0,2)
Spawn2:
MICR UUUU 0 A_SeekerMissile(90,90,SMF_PRECISE,256)
MICR U 0 A_FaceTarget
MICR U 0 A_JumpIfCloser(32,"End")
MICR U 1 A_SpawnItemEx("MicroDevilChunkDamager",0,0,8)
MICR U 0 ACS_NamedExecuteAlways("cbm_missileyank",0,32)
MICR U 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"End")
loop
End:
TNT1 A 0
stop
}
}

Actor MicroDevilChunkDamager : BasicExplosion
{
DamageType "MicroDevilAlt"
Obituary "$OB_MICRODEVIL2"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(45,32,0,0,32)
stop
}
}

Actor MicroDevilSphereDamager
{
DamageType "MicroDevilTF"
Obituary "$OB_MICRODEVIL3"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(45,96,0,0,96)
stop
}
}

actor SplittingAttackMovementPickUp : CustomInventory
{
states
{
Pickup:
TNT1 AA 0
TNT1 A 0 A_CheckFloor("Forward")
TNT1 A 0 A_ChangeVelocity(cos(pitch)*35,0,-sin(pitch)*35,CVF_RELATIVE|CVF_REPLACE)
stop
Forward:
TNT1 A 0 A_ChangeVelocity(cos(pitch)*35,0,0,CVF_RELATIVE|CVF_REPLACE)
stop
}
}

actor FlippedGravityCoolDownWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 AA 0
TNT1 A 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 1 A_TakeFromTarget("MicroDevilGravityCoolDown",1)
TNT1 A 0 A_JumpIfInTargetInventory("MicroDevilGravityCoolDown",1,"Spawn")
Death:
TNT1 A 1
stop
}
}

actor MicroDevilJumpCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",2)>0,1)
Goto Failed
TNT1 A 0 A_JumpIfInventory("MicroDevilFly",1,1)
Goto Failed
TNT1 A 0 A_JumpIfInventory("MicroDevilHitGround",1,1)
Goto Failed
TNT1 A 0 ThrustThingZ(0,-12*7,0,0)
Failed:
TNT1 A 0
stop
}
}

actor MicroDevilCeilingCheck1 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("MicroDevilFly",1,"Pickup2")
stop
Pickup2:
TNT1 A 0 A_JumpIf(z-ceilingz==0-56,"Pickup3")
TNT1 A 0 A_TakeInventory("MicroDevilHitGround",1) 
TNT1 A 0 A_JumpIfInventory("VCOnce",1,"PickUp4")
TNT1 A 0 ThrustThingZ(0,8,0,1)
Stop
Pickup3:
TNT1 A 0 A_GiveInventory("MicroDevilHitGround",1)
stop
PickUp4:
TNT1 A 0
stop
}
}

Actor MicroDevilCeilingCheck2 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("MicroDevilCeilingCheck1",1)
TNT1 A 0 A_JumpIfInventory("MicroDevilFly",1,"Pickup2")
stop
Pickup2:
TNT1 A 0 A_TakeInventory("MicroDevilGravityAmmo",1)
stop
}
}

actor MicroDevilColor1 : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+INVENTORY.AUTOACTIVATE
+COUNTITEM
+INVBAR
states
{
Pickup:
TNT1 A 1 ACS_ExecuteAlways(991,0,10879,0)
stop
}
}
actor MicroDevilColor2 : MicroDevilColor1{states{Pickup:TNT1 A 1 ACS_ExecuteAlways(971,0,10880,0)stop}}

Actor MicroDevilClonePickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("MicroDevilClone1",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("MicroDevilClone2",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("MicroDevilClone3",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("MicroDevilClone4",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("MicroDevilClone5",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("MicroDevilClone6",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("MicroDevilClone7",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("MicroDevilClone8",0,0,0,0,0,0,0,1)
stop
}
}

Actor MicroDevilUltDamagerPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("MicroDevilTrainDamager1")
TNT1 A 0 A_SpawnItemEx("MicroDevilTrainDamager2")
TNT1 A 0 A_SpawnItemEx("MicroDevilTrainDamager3")
TNT1 A 0 A_SpawnItemEx("MicroDevilTrainDamager4")
TNT1 A 0 A_SpawnItemEx("MicroDevilTrainDamager5")
TNT1 A 0 A_SpawnItemEx("MicroDevilTrainDamager6")
TNT1 A 0 A_SpawnItemEx("MicroDevilTrainDamager7")
TNT1 A 0 A_SpawnItemEx("MicroDevilTrainDamager8")
stop
}
}

actor MicroDevilClone1
{
PROJECTILE
+NOINTERACTION
Alpha 0.0
Radius 1
Height 1
scale 2.5
States
{
Spawn:
TNT1 AA 0
TNT1 A 5
Goto CheckState
CheckState:
TNT1 A 0 A_PlaySound("weapon/chargetrain",1,0.5)
TNT1 A 0 A_SetTranslucent(1.0)
TNT1 A 0 A_JumpIf(z-floorz>0,"Jumping")
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag",9,"SeeE")
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag",6,"SeeD")
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag",3,"SeeC")
Goto SeeB
SeeB:
TNT1 A 1
MICR B 1
stop
SeeC:
TNT1 A 1
MICR C 1
stop
SeeD:
TNT1 A 1
MICR D 1
stop
SeeE:
TNT1 A 1
MICR E 1
stop
Jumping:
TNT1 A 1
MICR J 1
stop
}
}

actor MicroDevilClone2 : MicroDevilClone1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 10
Goto CheckState
}
}

actor MicroDevilClone3 : MicroDevilClone1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 15
Goto CheckState
}
}

actor MicroDevilClone4 : MicroDevilClone1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 20
Goto CheckState
}
}

actor MicroDevilClone5 : MicroDevilClone1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 25
Goto CheckState
}
}

actor MicroDevilClone6 : MicroDevilClone1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 30
Goto CheckState
}
}

actor MicroDevilClone7 : MicroDevilClone1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 35
Goto CheckState
}
}

actor MicroDevilClone8 : MicroDevilClone1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 40
Goto CheckState
}
}

Actor MicroDevilTrainDamager0
{
DamageType "MicroDevilUlt"
Obituary "$OB_MICRODEVIL4"
States
{
Spawn:
TNT1 AA 0
Goto Spawn2
Spawn2:
TNT1 A 0 A_GiveToTarget("MicroDevilUltBuildCooldownGiver",1)
TNT1 A 0 A_Explode(40,40,0,0,40)
TNT1 A 10 A_Quake(2,10,0,200)
stop
}
}

Actor MicroDevilTrainDamager1 : MicroDevilTrainDamager0
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 5
Goto Spawn2
}
}

Actor MicroDevilTrainDamager2 : MicroDevilTrainDamager0
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 10
Goto Spawn2
}
}

Actor MicroDevilTrainDamager3 : MicroDevilTrainDamager0
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 15
Goto Spawn2
}
}

Actor MicroDevilTrainDamager4 : MicroDevilTrainDamager0
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 20
Goto Spawn2
}
}

Actor MicroDevilTrainDamager5 : MicroDevilTrainDamager0
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 25
Goto Spawn2
}
}

Actor MicroDevilTrainDamager6 : MicroDevilTrainDamager0
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 30
Goto Spawn2
}
}

Actor MicroDevilTrainDamager7 : MicroDevilTrainDamager0
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 35
Goto Spawn2
}
}

Actor MicroDevilTrainDamager8 : MicroDevilTrainDamager0
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 40
Goto Spawn2
}
}

actor MicroDevilUltEndPickUpPickUp : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_ChangeFlag("PICKUP",True)
TNT1 A 0 A_TakeInventory("InvProtection",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",False)
TNT1 A 0 A_GiveInventory("MicroDevilColor1",1)
TNT1 A 0 A_TakeInventory("MicroDevilUltActive",1)
TNT1 A 0 A_TakeInventory("PowerUltBuildCooldown",1)
TNT1 A 0 A_SpawnItemEx("MicroDevilCloneExit1")
TNT1 A 0 A_SpawnItemEx("MicroDevilCloneExit2")
TNT1 A 0 A_SpawnItemEx("MicroDevilCloneExit3")
TNT1 A 0 A_SpawnItemEx("MicroDevilCloneExit4")
TNT1 A 0 A_SpawnItemEx("MicroDevilCloneExit5")
TNT1 A 0 A_SpawnItemEx("MicroDevilCloneExit6")
TNT1 A 0 A_SpawnItemEx("MicroDevilCloneExit7")
TNT1 A 0 A_SpawnItemEx("MicroDevilCloneExit8")
stop
}
}

actor MicroDevilCloneExit1
{
PROJECTILE
+NOINTERACTION
Alpha 0.0
Radius 1
Height 1
scale 2.5
States
{
Spawn:
TNT1 AA 0
TNT1 A 5
Goto Despawn
Despawn:
TNT1 A 0 A_SpawnItemEx("MicroDevilCloneExit",0,0,8,5,0,15)
stop
}
}

actor MicroDevilCloneExit2 : MicroDevilCloneExit1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 10
Goto Despawn
}
}

actor MicroDevilCloneExit3 : MicroDevilCloneExit1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 15
Goto Despawn
}
}

actor MicroDevilCloneExit4 : MicroDevilCloneExit1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 20
Goto Despawn
}
}

actor MicroDevilCloneExit5 : MicroDevilCloneExit1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 25
Goto Despawn
}
}

actor MicroDevilCloneExit6 : MicroDevilCloneExit1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 30
Goto Despawn
}
}

actor MicroDevilCloneExit7 : MicroDevilCloneExit1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 35
Goto Despawn
}
}

actor MicroDevilCloneExit8 : MicroDevilCloneExit1
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 40
Goto Despawn
}
}

actor MicroDevilCloneExit
{
Translation "192:192=216:216", "198:198=220:220"
PROJECTILE
-NOGRAVITY
+SKYEXPLODE
+BOUNCEONCEILINGS
Gravity 1.0
radius 8
height 8
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
MICR KKKKKKKKKKJ 1
wait
Death:
TNT1 A 0 A_PlaySoundEx("weapon/WaterShieldBreak","SoundSlot6")
TNT1 AAAAAAAAAA 0 A_SpawnItemEx("YDIntroFX",random(0,40),0,Random(0,32),random(2,8),0,random(5,12),random(0,359))
stop
}
}

actor MicroDevilUltBuildCooldownGiver : UltBuildCooldownGiver
{
Powerup.Duration -1
}

actor MicroDevilSpeed : PowerSpeed
{
+POWERSPEED.NOTRAIL
Powerup.Duration -999
Speed  2.5
}

Actor SplittingAttackProtect : PowerProtection
{
powerup.duration 70
damagefactor "MicroDevilAlt", 0.0
}

Actor DevilTrainProtect : PowerProtection
{
powerup.duration 25
damagefactor "MicroDevilULT", 0.0
}

Actor DevilChunkTimer1 : Inventory
{
inventory.amount 1
inventory.maxamount 35
}

Actor DevilChunkTimer2 : DevilChunkTimer1 {}

Actor MicroDevilGravityAmmo : Inventory
{
inventory.amount 1
inventory.maxamount 112
}

Actor MicroDevilGravityCoolDown : Inventory
{
inventory.amount 1
inventory.maxamount 175
}

Actor MicroDevilFly : VCOnce{}
Actor MicroDevilLand : VCOnce{}
Actor MicroDevilHitGround : VCOnce{} 
Actor MicroDevilDropDown : VCOnce{}
Actor MicroDevilUltActive : VCOnce{}

actor MicroDevilWallCheck : NiceWallCheck
{
Radius 36
Height 36
states
{
Spawn:
PLAY A 1
stop
Crash:
XDeath:
TNT1 A 1
stop
Death:
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag",36,"XDeath")
TNT1 A 0 A_GiveToTarget("CutterFlag",36)
Stop
}
}
